Jackson শুধু JSON নয়, XML ডেটা প্রক্রিয়াজাত করতেও সক্ষম। JAXB-অভিযোজিত (JAXB-compatible) ডেটা মডেল দিয়ে Jackson JSON এবং XML উভয় ফরম্যাটে ডেটা হ্যান্ডল করতে পারে। এটি বিশেষত তখন কার্যকর যখন একই ডেটা মডেল থেকে JSON এবং XML উভয়ই উৎপন্ন বা পাঠ করা দরকার।
JAXB এবং Jackson-এর সমন্বয়
Jackson সরাসরি JAXB-এনোটেশন সমর্থন করে, যেমন:
- @XmlRootElement
- @XmlElement
- @XmlAttribute
- @XmlTransient
প্রয়োজনীয় ডিপেন্ডেন্সি
XML হ্যান্ডলিংয়ের জন্য Jackson-এ jackson-dataformat-xml অন্তর্ভুক্ত করতে হবে।
Maven ডিপেন্ডেন্সি:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.15.2</version> <!-- Latest version -->
</dependency>
JSON এবং XML-এর জন্য মডেল ক্লাস তৈরি
মডেল ক্লাস:
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement
class User {
@XmlElement
@JsonProperty
public int id;
@XmlElement
@JsonProperty
public String name;
@XmlElement
@JsonProperty
public String email;
@XmlElement
@JsonProperty
public Address address;
}
@XmlRootElement
class Address {
@XmlElement
@JsonProperty
public String city;
@XmlElement
@JsonProperty
public String zip;
}
1. JSON Serialization এবং Deserialization
JSON Serialization:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.id = 101;
user.name = "John Doe";
user.email = "john.doe@example.com";
Address address = new Address();
address.city = "Dhaka";
address.zip = "1212";
user.address = address;
// JSON serialization
ObjectMapper objectMapper = new ObjectMapper();
String jsonOutput = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
System.out.println("JSON Output:");
System.out.println(jsonOutput);
}
}
আউটপুট:
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"city": "Dhaka",
"zip": "1212"
}
}
2. XML Serialization এবং Deserialization
XML Serialization:
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.id = 101;
user.name = "John Doe";
user.email = "john.doe@example.com";
Address address = new Address();
address.city = "Dhaka";
address.zip = "1212";
user.address = address;
// XML serialization
XmlMapper xmlMapper = new XmlMapper();
String xmlOutput = xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
System.out.println("XML Output:");
System.out.println(xmlOutput);
}
}
আউটপুট:
<User>
<id>101</id>
<name>John Doe</name>
<email>john.doe@example.com</email>
<address>
<city>Dhaka</city>
<zip>1212</zip>
</address>
</User>
3. JSON এবং XML থেকে Deserialization
JSON থেকে Object:
String jsonInput = """
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com",
"address": {
"city": "Dhaka",
"zip": "1212"
}
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User userFromJson = objectMapper.readValue(jsonInput, User.class);
System.out.println("Name from JSON: " + userFromJson.name);
XML থেকে Object:
String xmlInput = """
<User>
<id>101</id>
<name>John Doe</name>
<email>john.doe@example.com</email>
<address>
<city>Dhaka</city>
<zip>1212</zip>
</address>
</User>
""";
XmlMapper xmlMapper = new XmlMapper();
User userFromXml = xmlMapper.readValue(xmlInput, User.class);
System.out.println("Name from XML: " + userFromXml.name);
মুখ্য ব্যবহারিক ক্ষেত্র
- API ডেভেলপমেন্ট:
- একক মডেল ব্যবহার করে JSON এবং XML ফরম্যাট সমর্থন।
- Cross-Platform Data Exchange:
- XML ব্যবহারকারী সিস্টেম এবং JSON-ভিত্তিক সিস্টেমের মধ্যে সমন্বয়।
- JAXB Migration:
- JAXB থেকে JSON এবং XML-এ স্থানান্তর।
উপকারিতা
- একই মডেল ব্যবহার করে JSON এবং XML উভয় ফরম্যাটে কাজ করা যায়।
- JAXB এনোটেশন সমর্থনের জন্য অতিরিক্ত কোড লেখার প্রয়োজন হয় না।
- Serialization এবং Deserialization প্রক্রিয়া দ্রুত এবং সহজ।
এভাবে Jackson ব্যবহার করে JSON এবং XML উভয় ফরম্যাট কার্যকরভাবে পরিচালনা করা সম্ভব।
Content added By
Read more